﻿<!DOCTYPE html>
<html>

<head lang="en">
    <meta charset="UTF-8">
    <title>注册</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport"
          content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    <meta name="renderer" content="webkit">
    <meta http-equiv="Cache-Control" content="no-siteapp"/>

    <link rel="stylesheet" href="./AmazeUI-2.4.2/assets/css/amazeui.min.css"/>
    <link href="./css/dlstyle.css" rel="stylesheet" type="text/css">
    <script src="./AmazeUI-2.4.2/assets/js/jquery.min.js"></script>
    <script src="./AmazeUI-2.4.2/assets/js/amazeui.min.js"></script>



    <!--引入vue-->
    <script src="js/plugins/vue/dist/vue.js"></script>
    <!--引入axios-->
    <script src="js/plugins/axios/dist/axios.js"></script>
    <script src="js/common.js"></script>


</head>

<body>
    <div id="app">
        <div class="login-boxtitle">
            <a href="home/demo.html"><img alt="" src="./images/logobig.png"/></a>
        </div>

        <!--注册页面-->
        <div class="res-banner">
        <div class="res-main">
            <div class="login-banner-bg"><span></span><img src="./images/big.jpg"/></div>
            <div class="login-box">

                <div class="am-tabs" id="doc-my-tabs">
                    <ul class="am-tabs-nav am-nav am-nav-tabs am-nav-justify">
                        <!--class="am-active"默认-->
                        <li class="am-active"><a href="">邮箱注册</a></li>
                        <li><a href="">手机号注册</a></li>
                    </ul>

                    <div class="am-tabs-bd">

                        <!--邮箱注册-->
                        <div class="am-tab-panel am-active">

                            <form method="post">
                                <div class="user-email">
                                    <label for="email"><i class="am-icon-envelope-o"></i></label>
                                    <input type="email" name="" id="email" v-model="emailUserForm.email" placeholder="请输入邮箱账号">
                                </div>
                                <div class="user-pass">
                                    <label for="password"><i class="am-icon-lock"></i></label>
                                    <input type="password" name="" id="password"  v-model="emailUserForm.password" placeholder="设置密码">
                                </div>
                                <div class="user-pass">
                                    <label for="passwordRepeat"><i class="am-icon-lock"></i></label>
                                    <input type="password" name="" id="passwordRepeat" v-model="emailUserForm.passwordRepeat"  placeholder="确认密码">
                                </div>
                            </form>

                            <!--阅读条款-->
                            <div class="login-links">
                                <label for="reader-me">
                                    <input id="reader-me" type="checkbox"> 点击表示您同意商城《服务协议》
                                </label>
                            </div>
                            <!--注册按钮-->
                            <div class="am-cf">
                                <!--坑：type="submit"会把form以同步的方式提交    改成button-->
                                <input type="button" name="" value="注册" @click="emailRegister" class="am-btn am-btn-primary am-btn-sm am-fl">
                            </div>

                        </div>

                        <!--手机号注册-->
                        <div class="am-tab-panel">
                            <form method="post">
                                <div class="user-phone">
                                    <label for="phone"><i class="am-icon-mobile-phone am-icon-md"></i></label>
                                    <input type="tel" name="" v-model="phoneUserForm.phone" id="phone" placeholder="请输入手机号">
                                </div>
                                <div class="user-phone">
                                    <label for="imageCode"><i class="am-icon-check am-icon-sm"></i></label>
                                    <input type="text" name="" style="width: 180px;" v-model="phoneUserForm.imageCode" id="imageCode" placeholder="请输入图片验证码">
                                    <img id="captcha-image-temp" @click="getImageCode":src="base64ImageCode"  class="captcha-image-temp"  alt="点击换图" title="点击换图" style="vertical-align: middle; cursor: pointer;">
                                </div>
                                <div class="verification">
                                    <label for="code"><i class="am-icon-code-fork"></i></label>
                                    <input type="tel" name="" id="code" v-model="phoneUserForm.phoneCode" placeholder="请输入验证码">
                                    <!-- 在Vue实例挂载的html模板中，定义事件要用@事件名。没有挂载Vue实例的时候才用onclick -->
                                    <button type="button" id="dyMobileButton" @click="sendMobileCode();">获取</button>
                                </div>
                                <div class="user-pass">
                                    <label for="password"><i class="am-icon-lock"></i></label>
                                    <input type="password" name="" id="password" v-model="phoneUserForm.password" placeholder="设置密码">
                                </div>
                                <div class="user-pass">
                                    <label for="passwordRepeat"><i class="am-icon-lock"></i></label>
                                    <input type="password" name="" id="passwordRepeat" v-model="phoneUserForm.passwordRepeat" placeholder="确认密码">
                                </div>
                            </form>
                            <div class="login-links">
                                <label for="reader-me">
                                    <input id="reader-me" type="checkbox"> 点击表示您同意商城《服务协议》
                                </label>
                            </div>
                            <div class="am-cf">
                                <!--坑：type="submit"会把form以同步的方式提交    改成button-->
                                <input type="button" name="" value="注册" @click="phoneRegister" class="am-btn am-btn-primary am-btn-sm am-fl">
                            </div>

                            <hr>
                        </div>

                    </div>
                </div>
            </div>
        </div>

        <div class="footer ">
            <div class="footer-hd ">
                <p>
                    <a href="# ">恒望科技</a>
                    <b>|</b>
                    <a href="# ">商城首页</a>
                    <b>|</b>
                    <a href="# ">支付宝</a>
                    <b>|</b>
                    <a href="# ">物流</a>
                </p>
            </div>
            <div class="footer-bd ">
                <p>
                    <a href="# ">关于恒望</a>
                    <a href="# ">合作伙伴</a>
                    <a href="# ">联系我们</a>
                    <a href="# ">网站地图</a>
                    <em>© 2015-2025 Hengwang.com 版权所有. 更多模板 <a href="http://www.cssmoban.com/" target="_blank" title="模板之家">模板之家</a>
                        - Collect from <a href="http://www.cssmoban.com/" title="网页模板" target="_blank">网页模板</a></em>
                </p>
            </div>
        </div>
    </div>

    </div>
    <script>
        $(function () {
            $('#doc-my-tabs').tabs();
        })
    </script>
    <script type="text/javascript">
        new Vue({
            el:"#app",
            data:{
                phoneUserForm:{
                    imageCode:'',    //用户图形验证码
                    phone:'18081063414',       //手机号码
                    phoneCode:'',    //手机验证码
                    password:'1',       //密码
                    passwordRepeat:'1'   //重复密码
                },
                emailUserForm:{
                    email:'1064751069@qq.com',
                    password:'1',       //密码
                    passwordRepeat:'1'   //重复密码
                },
                base64ImageCode:''  //base64编码的字符串

            },
            methods:{
                //手机注册
                phoneRegister(){
                  this.$http.post("/user/register/phone",this.phoneUserForm).then(res=> {
                      if (res.data.success){
                          location.href="/login.html";//当前窗口跳转 - js代码
                          // window.open("/login.html");//新窗口跳转    -js代码
                      }else {
                          alert(res.data.msg);
                      }
                  })
                },

                //邮箱注册
                emailRegister(){
                    this.$http.post("/user/register/email",this.emailUserForm).then(res=>{
                        if (res.data.success){
                            alert("注册成功！")
                            location.href="/login.html";//当前窗口跳转 - js代码
                            // window.open("/login.html");//新窗口跳转    -js代码
                        }else {
                            alert(res.data.msg);
                        }
                    })
                },

                //获取图形验证码
                getImageCode(){

                    //sessionStorage：存放的数据只在当前窗口有效。基本不用。不可以跨窗口

                    //localStorage：持久化存储。只要不删除，在当前浏览器永远有效。可以跨窗口，不能跨浏览器。
                        //但是不同的域名共享数据的，即在后台系统保存在localStorage的数据在前台系统是获取不到的


                    //先从localStorage中通过"imageCodeKey"(key)获取value(var imageCodeKey)
                    var imageCodeKey = localStorage.getItem("imageCodeKey");
                    //数据不存在
                    if (!imageCodeKey){
                        // 重新生成新的图形验证码key
                         imageCodeKey = this.createUuid();
                        //保存到LocalStorage--保证在后端redis中存在的图形验证码唯一
                        localStorage.setItem("imageCodeKey",imageCodeKey);
                    }

                    //发请求的方式=== get
                    //图形验证码=== verifyCode /image
                    //请求参数=== key--生成的code(图形验证码内容)作为value要存到redis数据库里(key,value)
                    //返回值=== base64编码的字符串
                                    //请求地址          //请求变量
                    this.$http.get("/verifyCode/image/"+imageCodeKey).then(res=>{

                        //赋值--返回值=== base64编码的字符串 返回给图形验证码的src
                        this.base64ImageCode="data:image/jpeg;base64,"+res.data;
                    })
                },

                //发送手机验证码
                sendMobileCode(){
                        //1.判断手机号不为空
                        if (!this.phoneUserForm.phone) {
                            alert("手机号不能为空");
                            return;
                        }
                        //2.判断图片验证码不为空
                        if (!this.phoneUserForm.imageCode) {
                            alert("图片验证码不能为空");
                            return;
                        }
                        //3.获取按钮，禁用按钮  发送时灰化不能使用，发送成功倒计时60才能使用，如果发送失败立即可以发送
                        var sendBtn = $(event.target);//获取到按钮
                        sendBtn.attr("disabled", true);//设置属性：disabled="true"

                        //组装请求参数
                        var param = {
                            phone: this.phoneUserForm.phone,            //手机号码
                            imageCode: this.phoneUserForm.imageCode,    //图形验证码
                            imageCodeKey: localStorage.getItem("imageCodeKey")  //获取redis的图形验证码的key
                        };

                        //4.发送ajax请求
                        this.$http.post("/verifyCode/smsCode", param).then(res => {
                            var ajaxResult = res.data;
                            if (ajaxResult.success) {
                                alert("手机验证码已经发送到您的手机，请在3分钟内使用");
                                //4.1.发送成：倒计时
                                var time = 60;
                                //周期性定时器
                                var interval = window.setInterval(function () {
                                    //每一条倒计时减一
                                    time = time - 1;
                                    //把倒计时时间搞到按钮上
                                    sendBtn.html(time + "s");
                                    //4.2.倒计时完成恢复按钮
                                    if (time <= 0) {
                                        sendBtn.html("重新发送");
                                        sendBtn.attr("disabled", false); //解除禁用
                                        //清除定时器
                                        window.clearInterval(interval);
                                    }
                                }, 1000);
                            } else {
                                //4.3.发送失败：提示，恢复按钮
                                sendBtn.attr("disabled", false);
                                alert(ajaxResult.msg);
                            }
                        })
                    },


                //前端生成key - 就用来传递到后端来保存或获取redis图形验证码
                createUuid(){
                    var s = [];
                    var hexDigits = "0123456789abcdefghi";
                    for (var i = 0; i < 36; i++) {
                        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
                    }
                    s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
                    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
                    s[8] = s[13] = s[18] = s[23] = "-";

                    var uuid = s.join("");
                    return uuid;
                }

            },
            mounted(){
                // alert(this.$http);
                //不仅点击图形验证码会调用这个方法来刷新验证码，页面一加载也应该展示图形验证码
                this.getImageCode();
            }
        })
    </script>
</body>

</html>